import ObjManager = require('./../kernel/cont/ObjManager');
import GroupObj = require('./../kernel/obj/GroupObj');
import SJGReplaceGroup = require('./../kernel/replace/SJGReplaceGroup');
import ObjPosition = require('./../kernel/base/ObjPosition');
export =SJGTypeSetUtil;

class SJGTypeSetUtil{
//    public  static calcPosition(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition>{
//        var ret:Array<ObjPosition> = null;
//        // 文字组对象的宽高，保持不变，根据可替换数组的高级属性计算每个文字的位置
//        switch (group.extend_method){
//            case  SJGReplaceGroup.HORIZON:
//                SJGTypeSetUtil.HORIZON(group,objMgr);
//                break;
//            case SJGReplaceGroup.VERTICLE:
//                SJGTypeSetUtil.VERTICLE(group,objMgr);
//                break;
//            case SJGReplaceGroup.CIRCLE:
//                SJGTypeSetUtil.CIRCLE(group,objMgr);
//                break;
//            case SJGReplaceGroup.RECT:
//                SJGTypeSetUtil.RECT(group,objMgr);
//                break;
//            case SJGReplaceGroup.W:
//                SJGTypeSetUtil.W(group,objMgr);
//                break;
//            case SJGReplaceGroup.PATH:
//                SJGTypeSetUtil.PATH(group,objMgr);
//                break;
//            
//            default:
//            
//                break;
//        }
//        
//        
//        return  ret;
//    }
//    // 组 －0横向扩展
//    // 参数：p页面
//    // 参数：group标题组
//    // 参数：callback 为async的回调函数，例如：asyncCallback(null, 'one');
//    public static HORIZON(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition> {
//        var ret:Array<ObjPosition> = new Array<ObjPosition>();
//        var THIS = this;
//        var groupObj:GroupObj =<GroupObj> objMgr.getObject(group.id);
//        var len = group.value.length;
//        if(len>0){
//            var x=0;
//            var y=0;
//            var w = groupObj.pos.w/len;
//            var h = groupObj.pos.h;
//            
//            // 水平扩展
//            for(var i=0;i<len;i++){
//                var pos:ObjPosition = new ObjPosition(x+w*i, y, w,h);
//                SJGTypeSetUtil.adjustStartPoint(group,pos);
//                ret.push(pos);
//            }
//        }
//        
//        return ret;
//    }
//    
//    // 组 －1垂直扩展
//    // 参数：p页面
//    // 参数：group标题组
//    // 参数：callback 为async的回调函数，例如：asyncCallback(null, 'one');
//    public static VERTICLE(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition> {
//        var ret:Array<ObjPosition> = new Array<ObjPosition>();
//        var groupObj:GroupObj =<GroupObj> objMgr.getObject(group.id);
//        var len = group.value.length;
//        if(len>0){
//            var x=0;
//            var y=0;
//            var w = groupObj.pos.w;
//            var h = groupObj.pos.h/len;
//            // 垂直扩展
//            for(var i=0;i<len;i++){
//                var pos:ObjPosition = new ObjPosition(x,y+h*i,w,h );
//                SJGTypeSetUtil.adjustStartPoint(group,pos);
//                ret.push(pos);
//            }
//        }
//        
//        return ret;
//    }
//    
//    // 组 －2圆形扩展
//    // 参数：p页面
//    // 参数：group标题组
//    // 参数：callback 为async的回调函数，例如：asyncCallback(null, 'one');
//    public static CIRCLE(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition> {
//        var ret:Array<ObjPosition> = new Array<ObjPosition>();
//        var groupObj:GroupObj =<GroupObj> objMgr.getObject(group.id);
//        var len = group.value.length;
//        if(len>0){
//            if(len==1){
//                var pos:ObjPosition = new ObjPosition(0,0,groupObj.pos.w,groupObj.pos.h );
//                SJGTypeSetUtil.adjustStartPoint(group,pos);
//                ret.push(pos);
//            }else{
//                var x=0;
//                var y=0;
//                var w=groupObj.pos.w/len;
//                var h=groupObj.pos.h/len;
//                // 垂直扩展
//                for(var i=0;i<len;i++){
//                    var angle = Math.PI*2/i;
//                    var pos:ObjPosition = new ObjPosition(
//                        x+groupObj.pos.w/2*(1+Math.sin(angle)),
//                        y+groupObj.pos.h/2*(1-Math.cos(angle)),
//                        w,h );
//                    SJGTypeSetUtil.adjustStartPoint(group,pos);
//                    ret.push(pos);
//                }
//            }
//        }
//        
//        return ret;
//    }
//    
//    // 组 －3矩形扩展
//    // 参数：p页面
//    // 参数：group标题组
//    // 参数：callback 为async的回调函数，例如：asyncCallback(null, 'one');
//    public static RECT(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition> {
//        var ret:Array<ObjPosition> = new Array<ObjPosition>();
//        var groupObj:GroupObj =<GroupObj> objMgr.getObject(group.id);
//        var len = group.value.length;
//        if(len>0){
//            // 按group的第一个字对象到大小进行扩展
//            if(groupObj.children.length>0){ 
//                var childObj: ObjBase=<ObjBase> objMgr.getObject(groupObj.children[0].id);
//                var x=0;
//                var y=0;
//                var w=childObj.pos.w;
//                var h=childObj.pos.h;
//                var col=Math.ceil(groupObj.pos.w/w);
//                var row=Math.ceil(groupObj.pos.h/h);
//                if(col>0&& row>0){
//                    for(var i=0;i<row;i++){ 
//                        for(var j=0;j<col;j++){ 
//                            var pos:ObjPosition = new ObjPosition(
//                                x+j*col,
//                                y+i*row,
//                                w,h );
//                            SJGTypeSetUtil.adjustStartPoint(group,pos);
//                            ret.push(pos);     
//                        }
//                    }
//                }
//            }
//        }
//                    
//        return ret;
//    }
//    
//    // 组 －4W形扩展
//    // 参数：p页面
//    // 参数：group标题组
//    // 参数：callback 为async的回调函数，例如：asyncCallback(null, 'one');
//    public static W(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition> {
//        var ret:Array<ObjPosition> = new Array<ObjPosition>();
//        var groupObj:GroupObj =<GroupObj> objMgr.getObject(group.id);
//        var len = group.value.length;
//        if(len>0){
//            if(len==1){
//                var pos:ObjPosition = new ObjPosition(0,0,groupObj.pos.w,groupObj.pos.h );
//                SJGTypeSetUtil.adjustStartPoint(group,pos);
//                ret.push(pos);
//            }else{
//                
//                
//                var x=0;
//                var y=0;
//                var w=groupObj.pos.w/len;
//                var h=groupObj.pos.h/len;
//                // 垂直扩展
//                for(var i=0;i<len;i++){
//                    // 上部分
//                    var pos: ObjPosition=null;
//                    if(i%2==0) {
//                        pos = new ObjPosition(
//                            x+i*w,
//                            y,
//                            w,h );
//                    } else { 
//                        // 下部分
//                    pos = new ObjPosition(
//                        x+i*w,
//                        y+groupObj.pos.h,
//                        w,h );
//                    }
//                    SJGTypeSetUtil.adjustStartPoint(group,pos);
//                    ret.push(pos);
//                }
//            }
//        }
//        return ret;
//    }
//    
//    // 组 －5按路径扩展
//    // 参数：p页面
//    // 参数：group标题组
//    // 参数：callback 为async的回调函数，例如：asyncCallback(null, 'one');
//    public static PATH(group: SJGReplaceGroup,objMgr:ObjManager):Array<ObjPosition> {
//        var ret:Array<ObjPosition> = new Array<ObjPosition>();
//        var groupObj:GroupObj =<GroupObj> objMgr.getObject(group.id);
//        var len = group.value.length;
//        if(len>0){
//            if(group.extend_path){ 
//                var length: number=group.extend_path.length();
//                var step: number=length/(len+1);
//                
//                var x=0;
//                var y=0;
//                var w=groupObj.pos.w;
//                var h=groupObj.pos.h/len;
//                // 沿着路径求点
//                for(var i=0;i<len;i++){
//                    var pt:Point = group.extend_path.ptInLength((i+1)*step);
//                    var pos:ObjPosition = new ObjPosition(
//                        x+pt.x,
//                        y+pt.y,
//                        w,h );
//                    SJGTypeSetUtil.adjustStartPoint(group,pos);
//                    ret.push(pos);   
//                }
//            }
//        }
//        
//        return ret;
//    }
//    
//    // 根据对齐点，纠正起点
//    // 参数：group
//    // 参数：pos，默认为左上角
//    public static adjustStartPoint(group: SJGReplaceGroup,pos: ObjPosition) { 
//        switch(group.align_point ){
//            case SJGReplaceGroup.ALIGN_POINT_0:
//                pos.x -= pos.w/2;
//                break;
//            case SJGReplaceGroup.ALIGN_POINT_1:
//                pos.x -= pos.w;
//                break;
//            case SJGReplaceGroup.ALIGN_POINT_2:
//                pos.x -= pos.w;
//                pos.y -=pos.h/2;
//                break;
//            case SJGReplaceGroup.ALIGN_POINT_3:
//                pos.x -= pos.w;
//                pos.y-=pos.h;
//                break; 
//            case SJGReplaceGroup.ALIGN_POINT_4:
//                pos.x -= pos.w/2;
//                pos.y-=pos.h;
//                break;
//            case SJGReplaceGroup.ALIGN_POINT_5:
//                pos.y-=pos.h;
//                break;
//            case SJGReplaceGroup.ALIGN_POINT_6:
//                pos.y-=pos.h/2;
//                break;
//            case SJGReplaceGroup.ALIGN_POINT_7:
//                
//                break;        
//            case SJGReplaceGroup.ALIGN_POINT_8:
//                pos.x -= pos.w/2;
//                pos.y -=pos.h/2;
//                break;
//        }
//    }
        
//SJG_MARK_APPEND--------------------
    
}